查看原文
其他

如何不再害怕 Vim【译】

lamyoung 白玉无冰 2022-06-10


vim的最常见的命令及其使用方式,一起学习命令背后的思想!


如果你曾经使用过 Vim,可能觉得编辑速度没有 GUI编辑器那么快。但是,一旦你深入学习,回报是指数成长的–你将能更高效的编写代码。我们大部分时间都用于解决设计问题,而不是实际编码问题。因此,快速编码似乎是最后需要关注的事情。当然,这不是写这个文章的主要原因。主要原因是:在用SSH连接的机器上不存在GUI编辑器,当你访问终端并想要编辑文件该怎么做呢?–你有 2 个选项:

  1. 放弃,并关闭vim

  2. 掌握vim

我使用不同的方法介绍vim:我汇总了我在日常生活中作为软件开发人员使用的vim,以及用于记忆内容的助记符。这包含几乎所有你需要日常编辑的方法。

基础知识

跟着我一起学习命令背后的思想!

模式

Vim 有 2 种模式:

  • 正常(命令模式)

  • 插入(编辑模式)

打开 Vim 时,您将在正常模式下启动。按 ESC 键可以回到正常模式。在正常模式下,使用:命令是无限制的。

进入插入模式有很多方法。最直接的是使用 i 命令。用于插入。在正常模式下,按 i,将进入插入模式。现在,你输入的任何内容都会显示在编辑器中。

怎么理解这两个模式:由于没有 GUI,就没有鼠标单击的概念,没有菜单可供选择,没有右键单击。因此,您需要一种方法来在唯一的输入源键盘上实现这个。可以将”正常(命令)”模式视为菜单栏和鼠标,而插入模式类似于GUI编辑器里的编写模式(输入的内容显示在屏幕上)。

单词

对 Vim 来说,单词(words)的含义几乎和我们认识的相同 – 一组由空格或特殊字符分隔的字符。命令为 w

命令解析

Vim 中的命令遵循一组规则。了解这一点有助于将每个命令放入特定的命令桶中,从而构建一个更好的心理模型。

命令如下所示:

[操作] <数字> [移动]

操作是你想做的。

数字是希望执行该操作的次数,数字默认为一次。

移动是该操作的范围。

例如,我们要删除接下来的3个字,从光标开始。在这里,操作是删除的,数字是3,移动是一个单词。删除的命令操作为 d。因此,我们得到的最终命令为:d3w–删除接下来的 3 个单词。

移动可以在不执行操作的情况下使用,该操作默认为导航。因此,在命令模式下键入 w 会将光标向后移动一个单词。

我们现在完全有能力开始学习命令本身(以及一系列的移动)。

有用的命令

如何关闭 Vim

首先,我们不想在没有退出计划的情况下被困在Vim的土地上。我们要有退出策略。

  • :q 退出

  • :q!强制退出

  • :wq 保存和退出

操作命令

d : 删除
i : 插入
p : 粘贴
y : 复制 x : 切割
u : 撤消
di: 删除包含yi : 复制包含
v : 视觉 /选择
/ : 搜索
% : 括号匹配, 开发人员欢欣鼓舞!
:s : 替代!
由于有些操作非常频繁,vim 的开发人员为他们创建了一个新的写法 – 省略了添加移动的需要。重复操作以应用于整行。例如:
删除当前行:dd
复制当前行:yy
是不是很简洁?

移动命令

移动与我们所看到的操作一样,可用移动会随着操作而改变。然而,有些移动是相当统一的。

 w : 下一个单词的开头
e : 当前单词的结尾
b : 前一个单词的开头
方向键 / [h,j,k,l] : 方向位移。h,j,k,l 是方向键的替代品,你可不必将使用键盘的方向箭。
$ : 行尾
0 : 行开始
G : 文件结尾
nG : 跳转到行号 n
:下一句首
}:下一段首

下面这个图有助于更好地可视化:

常见的命令

有了这些操作命令和移动命令,我们可以在 Vim 中创建大多数基本命令。下面8个是日常用的命令。想想解决方法?

  1. 删除接下来的 3 行(包括当前行)

  2. 复制当前单词(光标位于单词的开头)

  3. 复制当前单词(它有特殊字符,光标位于单词的中间)

  4. 向下移动 10 行

  5. 删除大括号内的所有内容

  6. 向上移动 2 段

  7. 粘贴以前选定的文本 5 次。

  8. 编辑光标存在的位置:“I can Vim now!”

… 



下面是一种解决方案:

  1. d3j

  2. yw

  3. yiW

  4. 10j

  5. di}

  6. 2{

  7. 5p

  8. i,进入插入模式,然后输入I can Vim now!

好吧,你做到了!恭喜你,这足够你探索Vim。本教程结束了。祝你好运。如果有人问你关于Vim,你可以做的比这个更好。向他们解释,或带他们阅读这篇文章 ;)




为你推荐

Linux Shell 生存入门指南【译】

JavaScript | 为你的日志添加颜色【译】

cocos creator | 用摄像机实现局部缩放的效果

微信云开发之排行榜的实现




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存